#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    label=new QLabel(this);
    label->setText("请输入密码:");//设置提示信息
    label->setGeometry(0,0,300,80);//设置位置

    line_edit1=new QLineEdit(this);
    line_edit1->setEchoMode(QLineEdit::Password);//设置密码格式
    line_edit1->setGeometry(0,100,300,80);//设置位置

    line_edit2=new QLineEdit(this);
    line_edit2->setEchoMode(QLineEdit::Password);
    line_edit2->setGeometry(0,200,300,80);

    //只要输入框中内容发生变动，就会触发textEdited信号
    //此信号触发后，就会调用槽函数
    connect(line_edit1,&QLineEdit::textEdited,this,&Widget::handler);
    connect(line_edit2,&QLineEdit::textEdited,this,&Widget::handler);


    line_edit3=new QLineEdit(this);
    line_edit3->setGeometry(0,350,300,80);
    line_edit3->setEchoMode(QLineEdit::Password);

    box1=new QCheckBox(this);
    box1->setText("显示密码");
    box1->setGeometry(0,300,100,50);

    //当qcheckbox单选按钮的选中状态发生改变时，就触发toggled信号
    //为这个信号设置槽函数
    connect(box1,&QCheckBox::toggled,this,&Widget::handler1);
}

Widget::~Widget()
{
    delete ui;
}

void Widget::handler(const QString &arg)
{
    //获取两个密码信息
    const QString s1=line_edit1->text();
    const QString s2=line_edit2->text();
    //判断密码信息
    if(s1.isEmpty()==true && s2.isEmpty()==true)
    {
        label->setText("密码为空");
    }
    else if(s1==s2)
    {
        label->setText("密码一致");
    }
    else
    {
        label->setText("密码不一致");
    }
}

// bool checked：表示当前qcheckbox按钮的是否选中状态
void Widget::handler1(bool checked)
{
    if(checked==true)
    {
        //显示状态
        //设置line_edit3为显示密码状态 明文状态
        line_edit3->setEchoMode(QLineEdit::Normal);
    }
    else
    {
        //隐藏状态
        //设置line_edit3为密文状态
        line_edit3->setEchoMode(QLineEdit::Password);
    }
}

